{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "c6b3cb00",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([ 5.9981956 , 14.9963912 ,  2.        , 13.89012121]),\n",
       " array([[ 7.04844695e-07,  7.78507639e-06,  1.73940758e-06,\n",
       "          3.16573136e-07],\n",
       "        [ 7.78507639e-06,  1.04125051e-04,  2.41605821e-05,\n",
       "          6.33146154e-07],\n",
       "        [ 1.73940758e-06,  2.41605821e-05,  6.89807147e-06,\n",
       "         -3.21827900e-14],\n",
       "        [ 3.16573136e-07,  6.33146154e-07, -3.21827888e-14,\n",
       "          8.36129866e-07]]))"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from scipy import optimize\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "%matplotlib inline\n",
    "\n",
    "x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ,11, 12, 13, 14, 15], dtype=float)\n",
    "y = np.array([5, 7, 9, 11, 13, 15, 28.92, 42.81, 56.7, 70.59, 84.47, 98.36, 112.25, 126.14, 140.03])\n",
    "\n",
    "def piecewise_linear(x, x0, y0, k1, k2):\n",
    "    return np.piecewise(x, [x < x0], [lambda x:k1*x + y0-k1*x0, lambda x:k2*x + y0-k2*x0])\n",
    "\n",
    "\n",
    "# 得到返回的A，B值\n",
    "A ,B = optimize.curve_fit(piecewise_linear, x, y)\n",
    "A,B\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "c76be04b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([ 5.9981956 , 14.9963912 ,  2.        , 13.89012121]),\n",
       " array([[ 7.04844695e-07,  7.78507639e-06,  1.73940758e-06,\n",
       "          3.16573136e-07],\n",
       "        [ 7.78507639e-06,  1.04125051e-04,  2.41605821e-05,\n",
       "          6.33146154e-07],\n",
       "        [ 1.73940758e-06,  2.41605821e-05,  6.89807147e-06,\n",
       "         -3.21827900e-14],\n",
       "        [ 3.16573136e-07,  6.33146154e-07, -3.21827888e-14,\n",
       "          8.36129866e-07]]))"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from scipy import optimize\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "%matplotlib inline\n",
    "\n",
    "x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ,11, 12, 13, 14, 15], dtype=float)\n",
    "y = np.array([5, 7, 9, 11, 13, 15, 28.92, 42.81, 56.7, 70.59, 84.47, 98.36, 112.25, 126.14, 140.03], dtype=float)\n",
    "#y = np.array([10061, 15366, 14321, 15391, 10929, 16363, 16966, 16184, 17244, 16655,\n",
    "#19860, 23378, 24958, 33788, 19409, 27820, 24956, 25345, 24740], dtype=float)\n",
    "\n",
    "def piecewise_linear(x, x0, y0, k1, k2):\n",
    "    return np.piecewise(x, [x < x0], [lambda x:k1*x + y0-k1*x0, lambda x:k2*x + y0-k2*x0])\n",
    "\n",
    "p , e = optimize.curve_fit(piecewise_linear, x, y)\n",
    "xd = np.linspace(0, 15, 100)\n",
    "plt.plot(x, y, \"o\")\n",
    "plt.plot(xd, piecewise_linear(xd, *p))\n",
    "\n",
    "p,e"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "ea1ae57f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGzCAYAAAAMr0ziAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAA9hAAAPYQGoP6dpAABYmElEQVR4nO3deVxU9f7H8dcAwuAC5gaiKGaWmiZuILZoZlFXLc0SzS2zzdQ0ytRuanU11LLMJZf2UlPrppV1LSOzzB0kr1lW5pYKuCQgyiJzfn+cn9MlUBkEzjC8n4/HPK7nzHdmPmfoytvv93u+X5thGAYiIiIibszL6gJERERELkaBRURERNyeAouIiIi4PQUWERERcXsKLCIiIuL2FFhERETE7SmwiIiIiNtTYBERERG3p8AiIiIibk+BRURERNyeAotICcvOzmbs2LGEhITg7+9PZGQka9asKdJrDx06RJ8+fahevToBAQHccccd/P7774W2feONN2jWrBl2u50mTZowe/bsQtt99dVX3HjjjdSqVYvq1asTERHBe++9d8E61q9fj81mw2azcezYsQLPL126lDZt2mC326lduzZDhw4ttN2lupTvEkr++1yxYgXR0dGEhITg5+dH/fr1ueuuu9i5c2e+dt98843z+yvsMWXKlHztExIS6N69O8HBwVStWpVrrrmGWbNmkZeXV+RrFfF4hoiUqL59+xo+Pj7GE088YSxYsMCIiooyfHx8jO++++6Cr8vIyDCaNGli1KlTx5g2bZrx0ksvGaGhoUb9+vWNY8eO5Ws7f/58AzB69+5tLFy40Bg4cKABGFOnTs3X7uOPPzZsNpvRsWNHY/bs2cacOXOMG264wQCMl156qdA68vLyjPDwcKNKlSoGYBw9ejTf86+++qoBGDfddJMxd+5cY/z48UblypWNa665xjhz5kwxvrHzK+53aRil830+++yzRkxMjDF16lTj9ddfNyZPnmxcfvnlhr+/v5GUlORsl5ycbLz33nsFHrfccosBGFu2bHG23bZtm+Hr62tcffXVxksvvWTMnz/fuOOOOwzAePTRRy/xGxTxHAosIiVo8+bNBmC88MILznNnzpwxGjdubERFRV3wtdOmTSvwy+ynn34yvL29jfHjxzvPnT592qhZs6bRrVu3fK/v37+/UaVKFePEiRPOczfffLMREhJiZGVlOc/l5uYajRs3Nq655ppC65g3b55Rs2ZNY9SoUQUCS3Z2tlG9enXjhhtuMBwOh/P8p59+agDGrFmzLniNrriU79IwSuf7LExycrLh4+NjPPTQQxet6YorrjCaNGmS79wDDzxg+Pr6GsePH893/oYbbjACAgIu+p4iFYWGhERK0Icffoi3tzcPPvig85zdbmfo0KFs3LiRgwcPXvC17du3p3379s5zTZs25aabbmL58uXOc2vXruX48eM88sgj+V4/fPhwMjMz+eyzz5zn0tPTueyyy/Dz83Oe8/HxoVatWvj7+xeo4cSJEzz99NM899xzVK9evcDzO3fu5OTJk8TExGCz2Zznu3fvTtWqVVm6dKnz3ODBg7Hb7fz000/53iM6OprLLruMw4cPn/e7OPd9FPe7PPf6kv4+C1OnTh0qV67MyZMnL9huy5Yt/Pbbb/Tv3z/f+fT0dOx2e4Hvu27duoX+jFxx6tQpqlSpwqhRowo898cff+Dt7U1cXNwlfYZIWVFgESlB27dv58orryQgICDf+YiICACSkpIKfZ3D4WDHjh20a9euwHMRERHs2bOHjIwM52cABdq2bdsWLy8v5/MAnTt35scff2TChAn89ttv7Nmzh3/9619s27aNJ598ssBnTZgwgeDgYB566KFC68zOzgYo9Bepv78/27dvx+FwAPDKK69Qu3ZtBg8e7JyLsWDBAr788ktmz55NSEhIoZ9xTnG/Syi97/OckydPcvToUf773/9y//33k56ezk033XTB61m8eDFAgcDSuXNn0tPTeeihh/jpp5/Yv38/8+fP56OPPmL8+PH52v75558cO3bsoo/Tp08DULVqVXr16sWyZcsKzId5//33MQyjQD0ibsvqLh4RT3L11VcbXbp0KXD+xx9/NABj/vz5hb7u6NGjBmA899xzBZ6bO3euARg///yzYRiGMXz4cMPb27vQ96ldu7bRt29f5/GpU6eMPn36GDabzQAMwKhcubKxcuXKAq/94YcfDG9vb+OLL74wDMMwJk2aVGBI6OjRo4bNZjOGDh2a77U///yz8/3/d37IF198YQDG5MmTjd9//92oWrWq0bNnz0Jr/7vifpfn6iyN7/Ocq666ynm9VatWNZ5++mkjLy/vvPWcPXvWCAoKMiIiIgp9bsSIEUalSpWc7+nt7W3MmzevQNuGDRs621zoMWnS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lY29e/eSnJyc77/rwMBAIiMjK8TfX2D+HWaz2ahevbrVpZQKh8PBwIEDGTNmDFdffbXV5ZQJj9ituTQcO3aMvLw8goKC8p0PCgri559/tqiqsuFwOBg9ejTXXnstLVq0sLqcUrN06VISExPZunWr1aWUut9//5158+YRGxvLU089xdatW3n00Ufx9fVl8ODBVpdX4saNG0d6ejpNmzbF29ubvLw8pkyZQv/+/a0urUwkJycDFPr317nnPFlWVhZjx46lX79+HrOj8d9NmzYNHx8fHn30UatLKTMKLFLA8OHD2blzJ+vXr7e6lFJz8OBBRo0axZo1a7Db7VaXU+ocDgft2rXj+eefB6B169bs3LmT+fPne2RgWb58OYsXL2bJkiVcffXVJCUlMXr0aEJCQjzyeuUvubm59OnTB8MwmDdvntXllIqEhAReeeUVEhMTsdlsVpdTZjQkdB61atXC29ublJSUfOdTUlIIDg62qKrSN2LECFatWsXatWupX7++1eWUmoSEBFJTU2nTpg0+Pj74+Piwbt06Zs2ahY+PD3l5eVaXWKLq1q1L8+bN851r1qwZBw4csKii0jVmzBjGjRtH3759admyJQMHDuSxxx4jLi7O6tLKxLm/oyra31/nwsr+/ftZs2aNx/aufPfdd6SmptKgQQPn31/79+/n8ccfJywszOrySo0Cy3n4+vrStm1b4uPjneccDgfx8fFERUVZWFnpMAyDESNGsGLFCr7++msaNWpkdUml6qabbuK///0vSUlJzke7du3o378/SUlJeHt7W11iibr22msL3Kb+yy+/0LBhQ4sqKl2nT5/Gyyv/X2/e3t44HA6LKipbjRo1Ijg4ON/fX+np6WzevNkj//6Cv8LKr7/+yldffUXNmjWtLqnUDBw4kB07duT7+yskJIQxY8bwxRdfWF1eqdGQ0AXExsYyePBg2rVrR0REBDNnziQzM5MhQ4ZYXVqJGz58OEuWLOHjjz+mWrVqznHuwMBA/P39La6u5FWrVq3A/JwqVapQs2ZNj5y389hjj9GxY0eef/55+vTpw5YtW1i4cCELFy60urRS0aNHD6ZMmUKDBg24+uqr2b59Oy+99BL33Xef1aWVmFOnTvHbb785j/fu3UtSUhI1atSgQYMGjB49msmTJ9OkSRMaNWrEhAkTCAkJoWfPntYVfQkudL1169blrrvuIjExkVWrVpGXl+f8O6xGjRr4+vpaVXaxXezn+/dAVqlSJYKDg7nqqqvKutSyY/VtSu5u9uzZRoMGDQxfX18jIiLC2LRpk9UllQqg0Mdbb71ldWllxpNvazYMw/j000+NFi1aGH5+fkbTpk2NhQsXWl1SqUlPTzdGjRplNGjQwLDb7cbll19u/POf/zSys7OtLq3ErF27ttD/zw4ePNgwDPPW5gkTJhhBQUGGn5+fcdNNNxm7d++2tuhLcKHr3bt373n/Dlu7dq3VpRfLxX6+f1cRbmu2GYYHLf0oIiIiHklzWERERMTtKbCIiIiI21NgEREREbenwCIiIiJuT4FFRERE3J4Ci4iIiLg9BRYRERFxewosIiIi4vYUWERERMTtKbCIiIiI21NgEREREbf3f+iklhq8bVD6AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "(array([ 0.00849076, -0.00377682]),\n",
       " array([[ 3.12053615e-08, -2.80848259e-07],\n",
       "        [-2.80848259e-07,  3.07460197e-06]]))"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 拟合直线\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy import optimize as op\n",
    " \n",
    "# 需要拟合的数据组\n",
    "x_group = np.array([3, 6.1, 9.1, 11.9, 14.9])\n",
    "y_group = np.array([0.0221, 0.0491, 0.0711, 0.0971, 0.1238])\n",
    " \n",
    " \n",
    "# 需要拟合的函数\n",
    "def f_1(x, A, B):\n",
    "    return A * x + B\n",
    " \n",
    " \n",
    "# 得到返回的A，B值\n",
    "A, B = op.curve_fit(f_1, x_group, y_group)[0]\n",
    "# 数据点与原先的进行画图比较\n",
    "plt.scatter(x_group, y_group, marker='o',label='real')\n",
    "x = np.arange(0, 15, 0.01)\n",
    "y = A * x + B\n",
    "plt.plot(x, y,color='red',label='curve_fit')\n",
    "plt.legend()\n",
    "plt.title('%.5fx%.5f=y' % (A, B))\n",
    "plt.show()\n",
    "\n",
    "op.curve_fit(f_1, x_group, y_group)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1001ef93",
   "metadata": {},
   "outputs": [],
   "source": [
    "def writeimg(data1, row1, column1, proj, geotrans, city):\n",
    "    # 判断栅格数据的数据类型\n",
    "    if 'int8' in data1.dtype.name:\n",
    "        datatype = gdal.GDT_Byte\n",
    "    elif 'int16' in data1.dtype.name:\n",
    "        datatype = gdal.GDT_UInt16\n",
    "    else:\n",
    "        datatype = gdal.GDT_Float32\n",
    "    if len(data1.shape) == 3:\n",
    "        im_bands, im_height, im_width = data1.shape\n",
    "    else:\n",
    "        im_bands, (im_height, im_width) = 1, data1.shape\n",
    "    driver = gdal.GetDriverByName(\"GTiff\")  # 数据类型必须有，因为要计算需要多大内存空间\n",
    "    filename = outpath + os.sep + city + '_LD.tif'\n",
    "    dataset = driver.Create(filename, im_width, im_height, im_bands, datatype)\n",
    "    dataset.SetGeoTransform(geotrans)  # 写入仿射变换参数\n",
    "    dataset.SetProjection(proj)  # 写入投影\n",
    "    if im_bands == 1:\n",
    "        dataset.GetRasterBand(1).WriteArray(data1)  # 写入数组数据\n",
    "    else:\n",
    "        for i in range(im_bands):\n",
    "            dataset.GetRasterBand(i + 1).WriteArray(data1[i])\n",
    "    return dataset"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
